<!DOCTYPE html>
<html>

  <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

  <title>GcsSloop</title>
  <meta name="description" content="嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。">
  <meta name="author" content="GcsSloop">
  <meta name="keywords" content="">
  <meta name="关键字" content="">
  

  <meta name="twitter:card" content="summary">
  <meta name="twitter:title" content="GcsSloop">
  <meta name="twitter:description" content="嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。">
  <meta name="twitter:keywords" content="">
  
  <meta property="og:type" content="article">
  <meta property="og:title" content="GcsSloop">
  <meta property="og:description" content="嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。">
  <meta name="og:keywords" content="">

  <meta name="theme-color" content="#343434">
  
  <link rel="icon" type="image/png" href="https://raw.githubusercontent.com/GcsSloop/gcssloop.github.io/master/assets/siteinfo/favicon.png" />
  <link href="https://raw.githubusercontent.com/GcsSloop/gcssloop.github.io/master/assets/siteinfo/favicon.png" rel="shortcut icon" type="image/png">
  
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet">
  <link rel="stylesheet" href="/css/main.css">

  <link rel="canonical" href="http://www.gcssloop.com/page/2/">
  <link rel="alternate" type="application/rss+xml" title="GcsSloop" href="http://www.gcssloop.com/feed.xml">
  
  <meta name="google-site-verification" content="Z_g58PkzRAyBMxkqrcDdWrTBK8oOWM-7rUHauhLNF2E" />
  <meta name="baidu-site-verification" content="kUtTXCKaZs" />
  <meta name="baidu-site-verification" content="6DuDv3aaJX" />
  
  <!--阅读次数统计-->
  <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"> </script>
  
  <!--Fuck Weixin and Baidu-->
  <meta http-equiv="Cache-Control" content="no-transform">
  <meta http-equiv=”Cache-Control” content=”no-siteapp” />
  <meta name="applicable-device" content="pc,mobile">
  <meta name="HandheldFriendly" content="true"/>

  <!-- Google Ad -->
  <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
  <script>
    (adsbygoogle = window.adsbygoogle || []).push({
      google_ad_client: "ca-pub-2767831356529421",
      enable_page_level_ads: true
    });
  </script>

</head>


  <body>

    <span class="mobile btn-mobile-menu">
        <i class="fa fa-list btn-mobile-menu__icon"></i>
        <i class="fa fa-angle-up btn-mobile-close__icon hidden"></i>
    </span>
    
    <header class="panel-cover " style="background-image: url('/assets/siteinfo/background-cover.jpg')">
  <div class="panel-main">

    <div class="panel-main__inner panel-inverted">
    <div class="panel-main__content">

        <a href="/#blog" title="前往 GcsSloop 的主页" class="blog-button"><img src="/assets/siteinfo/avatar.jpg" width="80" alt="GcsSloop logo" class="panel-cover__logo logo" /></a>
        <h1 class="panel-cover__title panel-title"><a href="/#blog" title="link to homepage for GcsSloop" class="blog-button">GcsSloop</a></h1>

        
        <span class="panel-cover__subtitle panel-subtitle">Just do IT later.</span>
        
        <hr class="panel-cover__divider" />
        <p class="panel-cover__description">嗨，我是 GcsSloop，一名来自2.5次元的魔法师，Android自定义View系列文章作者，非著名程序员。</p>
        <hr class="panel-cover__divider panel-cover__divider--secondary" />
        
        
        <p class="panel-cover__description">欢迎来到我的魔法世界!</p>
        
        
        <div class="navigation-wrapper">
          <div>
            <nav class="cover-navigation cover-navigation--primary">
              <ul class="navigation">
                <li class="navigation__item"><a href="/#blog" title="访问博客" class="blog-button">博客</a></li>
                
                  
                    <li class="navigation__item"><a href="https://github.com/GcsSloop" target="_blank" title="GcsSloop's GitHub">GitHub</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="/timeline" title="博客目录">目录</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="https://xiaozhuanlan.com/u/GcsSloop" target="_blank" title="小专栏">专栏</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="/category/customview" title="自定义View教程目录">自定义控件</a></li>
                  
                  
                
                  
                    <li class="navigation__item"><a href="/friends" title="友链">友链</a></li>
                  
                  
                
              </ul>
            </nav>
          </div>
          
          <div><nav class="cover-navigation navigation--social">
  <ul class="navigation">

  
  <!-- Weibo -->
  <li class="navigation__item">
    <a href="http://weibo.com/GcsSloop" title="@GcsSloop 的微博" target="_blank">
      <i class='social fa fa-weibo'></i>
      <span class="label">Weibo</span>
    </a>
  </li>
  

  
  <!-- Github -->
  <li class="navigation__item">
    <a href="https://github.com/GcsSloop" title="@GcsSloop 的 Github" target="_blank">
      <i class='social fa fa-github'></i>
      <span class="label">Github</span>
    </a>
  </li>
  
  
  
  <!-- Twitter -->
  <li class="navigation__item">
    <a href="http://twitter.com/GcsSloop" title="@GcsSloop" target="_blank">
      <i class='social fa fa-twitter'></i>
      <span class="label">Twitter</span>
    </a>
  </li>
  

    

  

  
  <!-- RSS -->
  <li class="navigation__item">
    <a href="/feed.xml" rel="author" title="RSS" target="_blank">
      <i class='social fa fa-rss'></i>
      <span class="label">RSS</span>
    </a>
  </li>
  

  
  <!-- Email -->
  <li class="navigation__item">
    <a href="mailto:GcsSloop@gmail.com" title="发邮件给我">
      <i class='social fa fa-envelope'></i>
      <span class="label">Email</span>
    </a>
  </li>
  

  
  <!-- Copyright -->
  <li class="navigation__item">
    <a href="http://choosealicense.online" title="选择版权"  target="_blank">
      <i class="social fa fa-copyright"></i>
      <span class="label">版权</span>
    </a>
  </li>
  
  
  </ul>
</nav>
</div>
        </div>
      </div>
    </div>
    
    
    <div class="panel-cover--overlay cover-slate"></div>
    
  </div>
</header>


    <div class="content-wrapper">
        <div class="content-wrapper__inner">
            <div class="main-post-list hidden">

  <ol class="post-list">
    <!--目录-->
    
    <!--置顶-->
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
    <!--普通文档流-->
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/gebug/rclayout" title="访问 雕虫晓技(三) 通用圆角布局全解析">雕虫晓技(三) 通用圆角布局全解析</a></h2>
          <p class="excerpt">关于作者GcsSloop，一名 2.5 次元魔法师。微博 | GitHub | 博客1. 前言之前，我在 GitHub 分享了一个开源库：rclayout，这个库的主要目的是快速实现 Android中 的圆角需求，例如这样的效果。分享这个库的时候只是觉得可能有用而已，但没有想到居然有了 800 多个 Star，看来有不少人像我一样，对圆角这一需求比较苦恼。圆角算是一种比较常见的需求了，最常应用于图片，因此可以找到大量的自定义圆角 ImageView，不仅如此，一些比较流行的图片加载框架也都对圆角进行了支持，像...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-12-29 00:00:00 +0800" class="post-list__meta--date date">2017-12-29</time> &#8226; <span class="post-list__meta--tags tags">GeBug</span> <a class="btn-border-small" href=/gebug/rclayout>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/gebug/coding" title="访问 雕虫晓技(二) 编码">雕虫晓技(二) 编码</a></h2>
          <p class="excerpt">关于作者GcsSloop，一名 2.5 次元魔法师。微博 | GitHub | 博客前言对于编程，一般需要先设计，再编码，即针对某一项功能进行详细的分析后，得出具体的技术方案，然后编码进行实现，这是最理想的状态，但是现实不可能这么理想。在公司的项目中，一般不会有太充裕的时间，专一用来琢磨技术方案，再加上个人能力有限，前期分析很难具体到每一个细节中，那么在这种情况下应该如何编程呢？下面就分享几个自己使用的准则。一、功能优先程序员主要工作是写代码，最终目标则是产品，而产品的核心是其中的功能，如果功能没有完成，代码...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-11-10 00:00:00 +0800" class="post-list__meta--date date">2017-11-10</time> &#8226; <span class="post-list__meta--tags tags">GeBug</span> <a class="btn-border-small" href=/gebug/coding>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/gebug/componentr" title="访问 雕虫晓技(一) 组件化">雕虫晓技(一) 组件化</a></h2>
          <p class="excerpt">关于作者GcsSloop，一名 2.5 次元魔法师。微博 | GitHub | 博客前言本文是我工作这段时间的部分经验总结，仅从个人的角度谈一下对工作中编程的看法。今年毕业出来工作，前期需要学习和实践的东西有很多，生活的节奏也在进行调节，因此就没有太多的精力去写文章了，从而导致我的“Android自定义View”系列文章一直处于停更状态。其实并非没有时间，而是没有太多的精力投入到这上面，对于技术文章来说，如果想要写的通俗易懂，不误导读者，不仅需要对其中运用到的各个技术细节都进行考证，而且要花费大量的精力去梳理...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-11-06 00:00:00 +0800" class="post-list__meta--date date">2017-11-06</time> &#8226; <span class="post-list__meta--tags tags">GeBug</span> <a class="btn-border-small" href=/gebug/componentr>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/tools/pager-grid-layoutmanager" title="访问 PagerLayoutManager(分页布局)">PagerLayoutManager(分页布局)</a></h2>
          <p class="excerpt">具有分页功能的 Recyclerview 布局管理器，主打分页，可以替代部分场景下的网格布局，线性布局，以及一些简单的ViewPager，但也有一定的局限性，请选择性使用。  网格分页布局源码解析(上)  网格分页布局源码解析(下)1. 效果预览  2. 支持的特性  网格布局，设置合适的行列数可以模拟线性布局或者ViewPager。  分页效果，支持自动回调页码的变化(总页数和当前页数)。  布局方向，支持横向滚动和垂直滚动。  方向切换，支持切换滚动方向。  支持电视，支持TV上按键翻页。  内存稳定，不...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-10-15 00:00:00 +0800" class="post-list__meta--date date">2017-10-15</time> &#8226; <span class="post-list__meta--tags tags">Tools</span> <a class="btn-border-small" href=/tools/pager-grid-layoutmanager>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/tools/rclayout" title="访问 RCLayout(圆角布局)">RCLayout(圆角布局)</a></h2>
          <p class="excerpt">Android 通用圆角布局，快速实现圆角需求。之前做项目的时候有圆角相关需求，在网上找了很多方案都不够满意，于是自己做了一个，目前已经使用了一段时间，更新了多个版本，我遇到的问题都进行了修复，并且添加了很多方便的可配置属性，以满足不同需求。【GitHub · 源代码】效果预览 支持的特性  包裹任意组件。  设置圆角大小。  分别对每一个角设置圆角大小。  设置描边宽度。  设置描边颜色。  圆形。  支持Padding。  圆角抗锯齿。  内容可点击区域即为显示区域。  是否剪裁自身背景。主要文件    ...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-10-05 00:00:00 +0800" class="post-list__meta--date date">2017-10-05</time> &#8226; <span class="post-list__meta--tags tags">Tools</span> <a class="btn-border-small" href=/tools/rclayout>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/tools/encrypt" title="访问 Encrypt(加密工具包)">Encrypt(加密工具包)</a></h2>
          <p class="excerpt">Android 加密解密工具包，字符串，byte[]，文件等对象的加密和解密工具集合，包含了多种加密方案，例如：编码工具(Base64Util)，信息摘要工具(MD5Util、SHAUtil)，对称加密工具(AESUtil、DESUtil)，非对称加密工具(RSAUtil)。其中所有的工具都经过了测试，如果发现有什么问题，可以到 【GitHub · Encrypt】 提交Issues。            加密类型      摘要      相关方法                  简单加密      换...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-10-01 00:00:00 +0800" class="post-list__meta--date date">2017-10-01</time> &#8226; <span class="post-list__meta--tags tags">Tools</span> <a class="btn-border-small" href=/tools/encrypt>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/gestruedector" title="访问 安卓自定义View进阶-手势检测(GestureDetector)">安卓自定义View进阶-手势检测(GestureDetector)</a></h2>
          <p class="excerpt">Android 手势检测，主要是 GestureDetector 相关内容的用法和注意事项，本文依旧属于事件处理这一体系，部分内容会涉及到之前文章提及过的知识点，如果你没看过之前的文章，可以到 自定义 View 系列 来查看这些内容。在开发 Android 手机应用过程中，可能需要对一些手势作出响应，如：单击、双击、长按、滑动、缩放等。这些都是很常用的手势。就拿最简单的双击来说吧，假如我们需要判断一个控件是否被双击(即在较短的时间内快速的点击两次)，似乎是一个很容易的任务，但仔细考虑起来，要处理的细节问题也有...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-07-09 00:00:00 +0800" class="post-list__meta--date date">2017-07-09</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/gestruedector>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/customview/multi-touch" title="访问 安卓自定义View进阶-多点触控详解">安卓自定义View进阶-多点触控详解</a></h2>
          <p class="excerpt">Android 多点触控详解，在前面的几篇文章中我们大致了解了 Android 中的事件处理流程和一些简单的处理方案，本次带大家了解 Android 多点触控相关的一些知识。多点触控 ( Multitouch，也称 Multi-touch )，即同时接受屏幕上多个点的人机交互操作，多点触控是从 Android 2.0 开始引入的功能，在 Android 2.2 时对这一部分进行了重新设计。在本文开始之前，先回顾一下 MotionEvent详解 中提到过的内容：  Android 将所有的事件都封装进了 Mot...&hellip;</p>
          <div class="post-list__meta"><time datetime="2017-01-16 00:00:00 +0800" class="post-list__meta--date date">2017-01-16</time> &#8226; <span class="post-list__meta--tags tags">CustomView</span> <a class="btn-border-small" href=/customview/multi-touch>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/markdown/markdown-editor" title="访问 Markdown实用技巧－编辑器(Typora)">Markdown实用技巧－编辑器(Typora)</a></h2>
          <p class="excerpt">本次的安利对象是一个 Markdown 编辑器，是会长1见过的最简单，最优雅的编辑器，先来看一下它的界面吧：它的界面非常简单，有多种主题可选，更重要的是它的预览界面和编辑界面是一体的，而不像其他编辑器那样是左右分开的。从上面的示例中可以看出，其输入模式支持多种，不论是手动输入语法还是使用快捷键，都非常的流畅，实时看到效果变化，除此之外 Typora 还有很多优点。Typora 的优点  预览和编辑界面一体。  强大的快捷键。  兼容常见扩展语法。  兼容 HTML (新版进行了完善)。  支持 YAML 格式...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-12-07 00:00:00 +0800" class="post-list__meta--date date">2016-12-07</time> &#8226; <span class="post-list__meta--tags tags">Markdown</span> <a class="btn-border-small" href=/markdown/markdown-editor>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
    
      <li>
          <!--正常文档-->
          
          <h2 class="post-list__post-title post-title"><a href="/lecture/gdg-developer-growth-guide" title="访问 程序员练级指北">程序员练级指北</a></h2>
          <p class="excerpt">之前非常有幸收到 脉脉不得语 的邀请参加 郑州GDG1 举办的 DevFest2 活动，并上台分享了一下自己的拙见，回来之后我将自己演讲的内容整理了一下，并分享给大家，希望对一些人有帮助，关于 郑州GDG 更多的活动内容，大家可以到 GDGZhengzou 查看。另外，欢迎关注我的 GitHub 和  微博 。我在本次活动中的演讲主题是《程序员练级指北》，主要内容如何从零开始，并逐渐成长为一名合格的程序员，里面的内容是基于自身的经历和见解所书写的，并不一定适合所有人，建议选择性采纳。为了演讲不那么枯燥乏味，我...&hellip;</p>
          <div class="post-list__meta"><time datetime="2016-11-28 00:00:00 +0800" class="post-list__meta--date date">2016-11-28</time> &#8226; <span class="post-list__meta--tags tags">Lecture</span> <a class="btn-border-small" href=/lecture/gdg-developer-growth-guide>继续阅读</a></div>
          <hr class="post-list__divider" />
          
      </li>
    
    
  </ol>

  <hr class="post-list__divider " />

<nav class="pagination" role="navigation">
    
        <a class="newer-posts pagination__newer btn btn-small btn-tertiary" href="/#blog">&larr; 最近</a>
    
    <span class="pagination__page-number">2 / 6</span>
    
        <a class="older-posts pagination__older btn btn-small btn-tertiary" href="/page/3/#blog">更早 &rarr;</a>
    
</nav>


</div>


            <section class="footer">
    <footer>
    	<span class="footer__copyright">本站点采用<a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh" target="_blank">知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议</a></span>
        <span class="footer__copyright">本站由 <a href="http://www.GcsSloop.com">@GcsSloop</a> 创建，采用 <a href="https://github.com/GcsSloop/Gcs-Vno-Jekyll" target="_blank">Gcs-Vno-Jekyll</a> 作为主题。<span id="busuanzi_container_site_pv"> 总访问量 <span id="busuanzi_value_site_pv"></span> 次</span> - &copy; 2019</span>
        <span class="footer__sitemap, footer__copyright"><a href="http://www.gcssloop.com/sitemap.xml" target="_blank">Site Map</a>
        <a href="http://www.gcssloop.com/vip" target="_blank">vip</a></span>
    </footer>
</section>

        </div>
    </div>
    
    <script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>

<script type="text/javascript" src="/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

<script type="text/javascript" src="/js/main.js"></script>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-82493667-1', 'auto');
  ga('send', 'pageview');

</script>

    
  </body>

</html>
